iT邦幫忙

2021 iThome 鐵人賽

DAY 25
0
Modern Web

30天每天寫網站系列 第 25

Day25-jQuery的一點小轉場_會打開的搜尋欄

  • 分享至 

  • xImage
  •  

今天寫一個簡單的搜尋欄樣式
有時候會在navbar上看到那種搜尋鍵,按下去後搜尋欄會拉開變出可以打字的地方
今天就在做這個~
https://i.imgur.com/B1AHF62.gif

首先先寫HTML
用一個div把input跟button包在一起

<div class="input-group" id="input-group">
    <input type="text" class="form-control" id="form-control" placeholder="搜尋..." autocomplete="off">
    <button type="button" class="btn search" id="searchitem">
        <i class="fas fa-search" style="margin: 2px;"></i>
    </button>
</div>

然後幫她做漂亮的CSS
比較重要的,input-group使用display: flex; 把內容橫向排版
跟如果有要做圓弧四角的話
按鈕的需要是右上右下有圓弧,border-radius: 0.3vw 0 0 0.3vw;
input是左上左下有圓弧,border-radius: 0 0.3vw 0.3vw 0
https://ithelp.ithome.com.tw/upload/images/20211010/20141991wolmIfBlQN.jpg
沒設0的話,銜接處會怪怪的
https://ithelp.ithome.com.tw/upload/images/20211010/20141991FQMszemG4N.jpg
若是按鈕區域沒有要顏色背景,可以把button的border-left跟input的border-right設成0
https://ithelp.ithome.com.tw/upload/images/20211010/20141991PT36crZsOq.jpg

完成好樣式就把input設上display: none;隱藏起來,然後因為我們把input隱藏了,左側的圓弧消失了
所以先把button的border-radius全部設成一樣的,比如我是0.3vw就是直接border-radius: 0.3vw;
https://ithelp.ithome.com.tw/upload/images/20211010/20141991UbH0Go7lYs.jpg

接著進入JS
簡單說明就是在button被點擊時,讓input的display: block;

$("#searchitem").click(function () {
    $("#form-control").attr("style", "display: block")
});

https://i.imgur.com/bAdbHbU.gif

剛剛我們先把button的左邊做了圓弧,現在要把它設回零
所以在cilck的function加上設定

$("#searchitem").click(function () {
    $("#form-control").attr("style", "display: block")
    $("#searchitem").attr("style", "border-radius: 0 0.3vw 0.3vw 0")
});

https://i.imgur.com/PGcwNRH.gif
最後我想要讓他有一點滑開的感覺
這個部分需要用input-group的寬度來幫忙
首先先把input-group的width設成0
在width設成0的狀態下,因為寬度受限,所以我們的input即使display: block; 了,也會小小的看著很可憐
https://ithelp.ithome.com.tw/upload/images/20211011/20141991VJ0LCcYAuw.jpg
然後我們一樣在cilck的function加上設定
不同的是我們不僅需要把style改變,我們還要要用.animate這個方法來幫助它有滑動的感覺
如果只使用跟之前一樣的.attr來覆蓋的話

$("#input-group").attr("style", "width: 16vw")

會長這樣
https://i.imgur.com/O38WiFg.gif
跟設寬度為0前長一樣,因為只是把它寬度設回去而已
如果我們用.animate呢

$("#input-group").animate({ width: "16vw" }, 200);

https://i.imgur.com/3CuWjsm.gif
就可以滑動開啦~


上一篇
Day24-按鈕分身術(下)_我的分身想去哪
下一篇
Day26-用jQuery寫得出ToDoList嗎_1_新增list沒什麼問題
系列文
30天每天寫網站30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言